package net;

import java.util.Map;

import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Streaming;
import retrofit2.http.Url;

/**
 * Created by wzp on 2019/2/22 0022.
 * <p>
 * 描述  ：todo
 */

public interface RestService {

    //Get请求
    @GET
    Call<String> get(@Url String url , @QueryMap Map<String,Object> params);

    @FormUrlEncoded
    @POST
    Call<String> post(@Url String url , @FieldMap Map<String , Object> params);

    @FormUrlEncoded
    @POST
    Call<String> put(@Url String url , @FieldMap Map<String , Object> params);

    @POST
    Call<String> putraw(@Url String url , @Body RequestBody requestBody);

    @POST
    Call<String> postraw(@Url String url , @Body RequestBody requestBody);


    @DELETE
    Call<String> delete(@Url String url , @QueryMap Map<String,Object> params);

   /**
    * streaming 边下边写  以免造成内存溢出
    * **/
    @Streaming
    @GET
    Call<ResponseBody> download(@Url String url , @QueryMap Map<String,Object> params);

    @Multipart
    @POST
    Call<String> upload(@Url String url , @Part MultipartBody.Part file);

    @GET("test/Test/Login")
    Call<String> getTest(@Query("username") String username , @Query("password") String password);


}
